package com.yeban.javase.day10.swing_learn.event;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @Desc TODO
 * @Author yeban
 * @Date 2025/10/19
 *
 * 简易计算器
 */
public class EventDemo03 extends JFrame {

    public EventDemo03() {
        this.setTitle("简易计算器");
        this.setSize(400, 200);
        this.setLocationRelativeTo((null));
        this. setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建组件
        JTextField num1 = new JTextField(5);  // 第一个数
        JLabel plusLabel = new JLabel("+");            // 创建一个标签来显示 "+" 号
        JTextField num2 = new JTextField(5);  // 第二个数
        JTextField result = new JTextField(8);     // 运算结果
        JButton button = new JButton("=");  // 点击得出运算结果

        // 结果框不允许用户直接编辑
        result.setEditable(false);

        // 创建布局
        Container container = this.getContentPane();
        container.setLayout(new FlowLayout());

        // 按顺序添加组件
        container.add(num1);
        container.add(plusLabel);
        container.add(num2);
        container.add(button);
        container.add(result);

        // 为按钮添加事件监听器
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 当按钮被点击时，执行这里的代码
                try{
                    // 从文本框获取输入的字符串
                    String str1 = num1.getText();
                    String str2 = num2.getText();

                    // 将字符串转换成double类型的数字
                    double number1 = Double.parseDouble(str1);
                    double number2 = Double.parseDouble(str2);

                    // 计算和
                    double sum = number1 + number2;

                    // 将结果转换成字符串返回
                    if(sum == (int)sum) {
                        result.setText(String.valueOf((int) sum));
                    } else {
                        result.setText(String.valueOf(sum));
                    }

                } catch (NumberFormatException efx){
                    JOptionPane.showMessageDialog(EventDemo03.this,
                            "请输入有效的数字！",
                            "输入错误",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
        });

    }

    public static void main(String[] args) {
        (new EventDemo03()).setVisible(true);
    }
}
